const express = require('express');
const fs = require('fs');
const path = require('path');
const router = express.Router();
// 上传图片的中间件
const uploadMiddleware = require('../controllers/uploadController');

// JSON 文件路径
const productsFilePath = path.join(__dirname, '../data/products.json');

// 读取商品列表数据
const getProductList = () => {
    try {
        const productsData = fs.readFileSync(productsFilePath, 'utf8');
        return productsData ? JSON.parse(productsData) : [];
    } catch (error) {
        console.error('Error reading products file:', error);
        return [];
    }
};

// 保存商品列表数据到 JSON 文件
const saveProductList = (productsList) => {
    try {
        fs.writeFileSync(productsFilePath, JSON.stringify(productsList, null, 2));
    } catch (error) {
        console.error('Error saving products file:', error);
    }
};
// 添加商品路由，同时处理图片上传
router.post('/add',(req, res) => {
    const newProduct = req.body;
    const productList = getProductList();

    // 如果新商品没有ID，则生成一个自增ID
    if (!newProduct.id) {
        newProduct.id = getNextAutoIncrementId(productList);
    }

    // 检查商品是否已存在
    if (productList.some((ele) => ele.id === newProduct.id)) {
        res.json({ code: 0, msg: '商品已存在' });
        return;
    }

    newProduct.isRecommended = false;
    newProduct.isAvailable = true;
    newProduct.isAvailable = true;
    newProduct.isNew = true;
    newProduct.userReviews = []; // 暂无
    newProduct.reviews = 4.8; // 自定义一个数值
    newProduct.views = 10;
    newProduct.sales = 0;
    newProduct.details= [
        "https://img2.woyaogexing.com/2020/07/16/fb410185878c4dd5a993a24d6ca766f9!400x400.jpeg",
        "https://cdn.cnbj1.fds.api.mi-img.com/product-images/xiaomi14ghnegm/index/40717.png",
    ],
    productList.push(newProduct);
    saveProductList(productList); // 添加后保存到 JSON 文件
    res.json({ code: 1, msg: '添加成功', result: newProduct, id:getNextAutoIncrementId(productList) }); // 返回添加的商品
});

// 获取商品列表
router.get('/list', (req, res) => {
    const productList = getProductList(); // 每次获取列表时从 JSON 文件读取最新数据

    // 解析params对象内的page和pageSize参数
    const params = req.query.params || {};
    const page = parseInt(params.page, 10) || 1;
    const pageSize = parseInt(params.pageSize, 10) || 10;

    const start = (page - 1) * pageSize;
    const end = page * pageSize;
    const paginatedItems = productList.slice(start, end);

    res.json({
        code: 1,
        msg: '获取成功',
        result: paginatedItems,
        total: productList.length,
    });
});

router.get('/data', (req, res) => {
    const productList = getProductList().filter(item => item.isAvailable);// 每次获取列表时从 JSON 文件读取最新数据


    res.json({
        code: 1,
        msg: '获取成功',
        result: productList,
        total: productList.length,
    });
});

// 添加商品
// 辅助函数：获取下一个自增ID
const getNextAutoIncrementId = (productList) => {
    const ids = productList.map(product => product.id);
    const maxId = Math.max(...ids);
    return maxId + 1;
};



// 添加商品
// router.post('/add', (req, res) => {
//     const newProduct = req.body;
//     const productList = getProductList();
//
//     // 如果新商品没有ID，则生成一个自增ID
//     if (!newProduct.id) {
//         newProduct.id = getNextAutoIncrementId(productList);
//     }
//
//     console.log('id有没有',newProduct.id);
//
//     // 检查商品是否已存在
//     if (productList.some((ele) => ele.id === newProduct.id)) {
//         res.json({ code: 0, msg: '商品已存在' });
//         return;
//     }
//     newProduct.isRecommended = false;
//     newProduct.isAvailable = true;
//     newProduct.isNew = true;
//     newProduct.userReviews = [];//暂无
//     newProduct.reviews = 4.8;//自定义一个数值
//     productList.push(newProduct);
//     saveProductList(productList); // 添加后保存到 JSON 文件
//     res.json({ code: 1, msg: '添加成功', result: newProduct, id:getNextAutoIncrementId(productList) }); // 返回添加的商品
// })


// 编辑商品
router.post('/edit', (req, res) => {
    const editedProduct = req.body;
    const id = parseInt(editedProduct.id);
    editedProduct.id = id; // 将id转换为数字类型
    const productList = getProductList();
    const index = productList.findIndex((ele) => ele.id === editedProduct.id);
    console.log("Edited Product ID: ", editedProduct.id);
    console.log("Product List: ", productList);
    console.log("Index Found: ", index);
    if (index !== -1) {
        productList[index] = editedProduct; // 更新商品
        saveProductList(productList); // 编辑后保存到 JSON 文件
        res.json({ code: 1, msg: '修改成功', result: editedProduct }); // 返回更新的商品
    } else {
        res.json({ code: 0, msg: '编辑商品时-商品未找到' });
    }
});

// 获取单个商品
router.get('/get/:id', (req, res) => {
    const id = parseInt(req.params.id); // 将id转换为数字类型
    const productList = getProductList();
    const data = productList.find((ele) => ele.id === id);
    console.log("Requested Product ID: ", id);
    console.log("Product List: ", productList);
    console.log("Found Data: ", data);
    if (data) {
        res.json({ code: 1, msg: '获取成功', result: data });
    } else {
        res.json({ code: 0, msg: '商品未找到' });
    }
});


// 删除商品
router.delete('/delete/:id', (req, res) => {
    const id = req.params.id;
    const productList = getProductList();
    const index = productList.findIndex((ele) => ele.id === id);
    if (index !== -1) {
        productList.splice(index, 1);
        saveProductList(productList); // 删除后保存到 JSON 文件
        res.json({ code: 1, msg: '删除成功' });
    } else {
        res.json({ code: 0, msg: '商品未找到' });
    }
});

module.exports = router;
